package xyz.zcq.zcqrpc.serializer;

import java.io.IOException;

/**
 * 序列化器
 */
public interface Serializer {

    /**
     * 将对象序列化得到字节数组
     *
     * @param object 对象
     * @param <T>    对象的类型
     * @return 字节数组
     */
    <T> byte[] serialize(T object) throws IOException;

    /**
     * 将字节数组反序列化得到对象
     *
     * @param bytes 字节数组
     * @param clazz 目标对象的类对象
     * @param <T>   对象类型
     * @return 对象
     */
    <T> T deserialization(byte[] bytes, Class<T> clazz) throws IOException;

}
